/**
 * 包括控件点击和坐标点击
 * clickControl(element)
 * 参数填属性
 */
//坑：微信中即使可以clickable为true，但就是不能点击
require("./去除限制.js");
a=text("更多")
clickControl(a)
 function clickControl(element,timeOut) {
    if (!timeOut) { timeOut = 1000 }
    let clickResult = false;
    if (element == null) {
        return false;
    }
    try {
        if (element.exists()) {
            // toastLog("准备click：" + element);
            let clickable = element.clickable();//是否可以点击
            if (clickable) {
                log("该控件可点击，尝试直接点击")
                element.findOnce(timeOut).click();
                clickResult = element.findOnce(timeOut).click();
                sleep(random(500, 1000));
            } else  {
                log("尝试坐标点击")
                let b = element.findOnce(timeOut).bounds();
                click(b.centerX(), b.centerY());
                clickResult =click(b.centerX(), b.centerY());
                sleep(random(500, 1000));
            }
        }
        return clickResult;
    } catch (error) {
        toast("clickControl方法出现错误：" + error)
        return false;
    }
 
}

/**
 * 判断并返回控件的某个属性
 */
function uiSelector(obj) {
    let element = null;
    try {
        if (text("" + obj + "").exists()) {
            toastLog(text("" + obj + ""))
            element = text("" + obj + "");
            return element;
        }
        if (desc("" + obj + "").exists()) {
            toastLog(desc("" + obj + ""))
 
            element = desc("" + obj + "");
            return element;
        }
        if (id("" + obj + "").exists()) {
            toastLog(id("" + obj + ""))
            element = id("" + obj + "");
            return element;
        }
        return element
    } catch (error) {
        toastError(error);
        return null;
    }
}























//如果控件id("tv_type")存在，则执行代码
// if(id("tv_type").exists()){}


// waitFor() //等待控件出现





//3.找找父/子控件，看是否clickable = true
// 大部分控件的父控件是可点击。
// 定位目标控件——定位父控件——点击父控件。



//坐标点击，屏幕缩放函数 适配多机型

function clicks(x,y)
{
//注意,测试机型为1080*2340,你可以根据自己的机型修改
x1=device.width/1080   //屏幕宽度，单位像素
y1=device.height/2340   //屏幕高度，单位像素

click(x*x1,y*y1)

}



// // 屏幕坐标系，屏幕左上角为原点（0，0），向右为x轴正向，向下为y轴正向
// // 单位为px
// // 点击屏幕x=500px，y=500px的点
// click(500,500) 


// serScreenMetrics(width,height)	设置脚本运行屏幕的宽高
// 宽不一致，会自动缩放运行的坐标值
// var w = device.height	获取屏幕高度px
// var w = device.width	获取屏幕宽度px




// 找控件的方法


// UiCollection.size()返回 {number} 集合中的控件数。 用于查看是否能找到控件

// UiSelector.textContains(str) //找不到控件时，用用这个方法
// str {string} 要包含的字符串
// 为当前选择器附加控件"text需要包含字符串str"的筛选条件。

// fullld属性就是全部Id，内容一样要写在id里，例如id("fullld的内容")

//.find()[1]  // 查找控件集合中的第2个



// findOne()  ==>    返回值是控件，如果找不到，会阻塞运行。
// findOne(timeOut)  ==> 他在规定时间范围内找不到返回值，会返回null，找到的返回值也是控件， 不会阻塞运行

// findOnce() ==>  就找一次，返回值是控件，找不到返回null
// findOnce(i)  ==>  找第i+1个     返回值是控件，找不到返回null

// find()  ==> 找到所有符合条件的控件    都返回过来， 找不到会返回一个空集合，不会阻塞运行
// untilfind() ==> 直到找到为止   会阻塞运行


// 点击方法

// 1.clickable必须是true

// click() ==>   这个会有150ms的延迟。  
// 调用：click(x,y) 或者 控件.click()这个clickable必须是true

// 2.当clickable是false时
//1.有文字的话直接点击对应的文字

// 2.利用找控件的bounds中心点坐标的方法，然后利用click(x,y)来解决
// 找中心点坐标的方法：
// x= 控件.bounds().centerX()
// y= 控件.bounds().centerY()

// press(x,y,1)  ==> 感觉这个比较快，1代表毫秒数

// 函数封装
function clickUiBounds(ui) {
    if (ui.exists()) {
        var a = ui.findOnce();
        if (a) {
            var b = a.bounds();
            if (b) {
                click(b.centerX(), b.centerY());
                return true;
            }
        }

    }
    return false;
}
